package com.cooksys.film_rental.dao;

import java.util.List;

import com.cooksys.film_rental.model.Address;
import com.cooksys.film_rental.model.Payment;
import com.cooksys.film_rental.model.Rental;
import com.cooksys.film_rental.model.Staff;
import com.cooksys.film_rental.model.Store;

/**
 * Data access object for the {@link Staff} class
 * 
 * @author Peter Zastoupil
 * 
 */
public interface StaffDao {

	/**
	 * 
	 * @param staffId
	 *            the staffId to search by
	 * @return the {@link Staff} object associated with the given staffId
	 */
	public Staff getStaffByStaffId(Byte staffId);

	/**
	 * 
	 * @param address
	 *            the {@link Address} to search by
	 * @return a List of {@link Staff} objects associated with the given address
	 */
	public List<Staff> searchStaffByAddress(Address address);

	/**
	 * 
	 * @param store
	 *            the {@link Store} to search by
	 * @return a List of {@link Staff} objects associated with the given store
	 */
	public List<Staff> searchStaffByStore(Store store);

	/**
	 * 
	 * @param rental
	 *            the {@link Rental} to search by
	 * @return the {@link Staff} associated with the given rental
	 */
	public Staff getStaffByRental(Rental rental);

	/**
	 * 
	 * @param payment
	 *            the {@link Payment} to search by
	 * @return the {@link Staff} associated with the given payment
	 */
	public Staff getStaffByPayment(Payment payment);

	/**
	 * 
	 * @param store
	 *            the {@link Store} to search by
	 * @return the {@link Staff} associated with the given store
	 */
	public Staff getStaffByStore(Store store);

}
